home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Games of Daze
/
Infomagic - Games of Daze (Summer 1995) (Disc 1 of 2).iso
/
x2ftp
/
msdos
/
lang
/
c--ex101
/
system
/
xms.c--
< prev
Wrap
Text File
|
1993-11-30
|
2KB
|
62 lines
/*
SPHINX C-- example program
NAME: XMS.C--
DESCRIPTION: This program gives an example of some of the Extended
Memory Standard (XMS) procedures available from C--.
An XMS driver (such as QEMM.SYS, HIMEM.SYS or 386MAX.SYS)
supporting version 2.0 or greater of the XMS standard is
required.
*/
?print "Building XMS.COM, the XMS example program.\n"
?include "WRITE.H--"
?include "DOS.H--"
byte moveok = "EMB Move was OK!\n";
?define SIZE_OF_BLOCK 100 /* size of block to allocate, in K bytes */
main ()
word EMBhandle;
{
WRITELN();
IF( XMSgetversion() < 0x0200 )
{WRITESTR("XMS driver 2.0 or greater required.\n");
EXIT(-1);}
ELSE WRITESTR("XMS driver detected.\n");
displayavailableEMB();
IF( XMSallocateEMB(SIZE_OF_BLOCK) == 0 )
{WRITESTR("Error allocating EMB of 100K size.\n");
EXIT(-1);}
WRITESTR("100K EMB allocated OK!\n");
EMBhandle = DX;
displayavailableEMB();
IF( XMSmoveEMB(0,0,EMBhandle, DS,#moveok,0, 0,12) == 1)
WRITESTR(#moveok); // should display "EMB Move was OK!\n";
IF( XMSmoveEMB(DS,#moveok+1,0, 0,0,EMBhandle, 0,12) == 1)
WRITESTR(#moveok); // should now display "EEMB Move wasOK!\n";
XMSfreeEMB( EMBhandle );
WRITESTR("XMS demo finished.\n");
}
void displayavailableEMB ()
word largestEMB,totalEMB;
{largestEMB = XMSqueryfreeEMB();
totalEMB = DX;
WRITESTR("Largest free EMB available is: ");
WRITEWORD(largestEMB);
WRITESTR("K\n");
WRITESTR("Total amount of free EMB available is: ");
WRITEWORD(totalEMB);
WRITESTR("K\n");
}
/* end of XMS.C-- */